package br.ufpb.di.ppgi.negocio.iservicos;

import java.util.List;

import br.ufpb.di.ppgi.negocio.modelo.homologacao.proposta.HomologacaoProposta;
import br.ufpb.di.ppgi.negocio.modelo.proposta.Proposta;
import br.ufpb.di.ppgi.negocio.modelo.proposta.PropostaStatus;
import br.ufpb.di.ppgi.negocio.modelo.usuario.Usuario;
import br.ufpb.di.ppgi.persistencia.pagination.ListaPaginada;

public interface IPropostaService extends IService {

	Proposta buscar(Long id);

	List<Proposta> listar();

	Proposta apagar(Long id);

	Proposta atualizar(Proposta Proposta);

	void adicionar(Proposta Proposta);

	List<Proposta> listarByUsuarioId(Long id);

	List<Proposta> listarPendencias(Usuario usuario);
	
	List<Proposta> listarPendencias(Long id);

	boolean homologar(HomologacaoProposta homologacao, boolean homologado);

	List<Proposta> listarByStatus(PropostaStatus pendencias);

	Boolean aprovar(Proposta proposta, Boolean aprovado) throws Exception;
	
	void finalizar(Proposta proposta);

	void reativarByAlunoId(Long id);

	ListaPaginada<Proposta> filtrarPaginando(String keyword, Integer page,
			String base);

}
